import numpy as np
import pandas as pd


# 创建一个符合正态分布的10个股票5天的涨跌幅数据
stock_change = np.random.normal(0, 1, (10, 5))

# 1.构造 DataFrame
## 1.1 通过 ndarray 数组生成
stock = ["股票{}".format(i) for i in range(10)] # 行索引
date = pd.date_range(start="20180101", periods=5, freq="B") # 列索引
data = pd.DataFrame(stock_change, index=stock, columns=date)
## 1.2 通过字典生成
df = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale':[55, 40, 84, 31]})
# 1.3修改行列索引
stock_ = ["股票_{}".format(i) for i in range(10)]
data.index = stock_
# 1.4 重设索引
# data.reset_index(drop=False)
# 1.5 设置新索引
df.set_index("month", drop=True) # 以月份设置新的索引
new_df = df.set_index(["year", "month"]) # 设置多个索引，以年和月份
print(new_df.index) # 返回 MultiIndex 可以表示三维数据
# 1.6 MultiIndex
print(new_df.index.names) # levels 的名称
print(new_df.index.levels) # 每个 level 的元组值


# 2.构造 Panel
p = pd.Panel(np.arange(24).reshape(4,3,2),
                 items=list('ABCD'),
                 major_axis=pd.date_range('20130101', periods=3),
                 minor_axis=['first', 'second'])
# 2.1 访问维度
print(p["A"])
p.major_xs("2013-01-01")
p.minor_xs("first")


# 3.构造 Series
pd.Series(np.arange(10)) # 指定内容，默认索引；
pd.Series([1, 8, 5], index=["a", "b", "c"]) # 指定索引；
pd.Series({'red': 100, 'blue': 200, 'green': 300}) # 通过字典构造数据；
